Computers were developed to aid people with repetitive tasks that were deemed to be extremely time consuming. Most of the early computers were used for complex mathematical problem solving. The first computing machines were extremely large compared to computers utilized today. Despite their enormous size, the early machines had vastly less computing power than today's machines. Generally speaking, the sizes of computing devices were driven by the sizes of the existing electronic components of that era. This meant that only large research facilities or big businesses could employ computing machines. As new technology allowed for smaller electronic devices to be developed, computing devices also diminished in size. Although still lacking in power by today's standards, the size of the computing machine was reduced enough that it could be placed on a typical desk. Thus, the “desktop computer” was born. This allowed users to have computing technology available in locations other than a central computing building. People found that having the capability to utilize computing technology at their work desk, rather than submitting computing problems to a central location, made them much more productive at their jobs. Eventually, the idea of moving the desktop computer to the home environment to provide even more convenience for doing work became a reality.
When the computer was brought into the home, it became obvious that there were other uses for it besides work. This allowed people to view the computer as not only a work tool, but also as a helpful device that could be used to play games, aid in learning, handle telecommunications for the home, and even control home appliances and lighting, for example. Generally speaking, however, a user was restricted to computing information available only on that computer. A game could be installed on the desktop computer and played on that computer, but one could not play others who had computers at other locations. Technology came to the rescue with a first attempt at connecting these computers utilizing telephonic modem technology. This permitted individual users to connect via direct dial-up telephone connections. This was great for local telephone calls, but enormously expensive for long distance calls. However, with the advent of the Internet, all that has changed. It provides an inexpensive means to connect computers from all over the world. This allows users to quickly and easily transmit and receive information on a global scale. Businesses fully embraced this new technology, creating “e-commerce.” Using the current technology, users can send and receive information and even buy products and services online.
In addition to promoting and increasing the exchange of goods or services, the Internet has also fostered social relationships. Communicating by electronic mail (e-mail) soon became a primary means of written contact. However, much has changed since the advent of the Internet. Online chat programs, phone calls, as well as instant messaging have increased in popularity and use as a means of contacting friends, acquaintances, work colleagues, and friends of friends as well as a means of meeting or seeking new friends, dating, party planning, and the like for thousands, if not millions, of people.
In the process of providing services that connect users to one another such as email, for example, a service provider can capture an underlying social network associated therewith. Moreover, “social networks” are by now acquiring “digital representations”. For example, in the case of instant messaging there is an underlying social network which the service provider captures in order to provide their services. Instant messaging also involves the notions of “buddies” and “presence alerts”, for instance, which facilitate the communication process between account users. However, in the more popular applications which often involve hundreds of millions of users, the underlying social network is too big to be serviceable by a single server and thus must be spread among a large number of servers.
In order to sustain the massive number of online service account users, several hundred servers per service provider are typically employed to handle the users as they log on and off the network. The allocation of users to servers is conventionally performed by using an algorithm known as a “hash function” which takes as input the user ID and outputs a server number. The key properties of the algorithm are that:                It does not require memory and thus is extremely fast to compute;        It effectively behaves in a random-like manner and thus does a good job in terms of distributing the users onto the hosts in a “balanced” way, i.e., making sure that no host receives too many users.        
The fact that this technique does not require remembering any information is one of the main reasons that it has been so widely adopted. In other words, any entity in the system that wants to know “which server is hosting this user?” does not need to go and look it up anywhere. Instead, given the user ID, it can run the hash function/algorithm and figure it out.
Unfortunately, conventional mechanisms including the hash function can be problematic because they do not consider user relationships between or among other users when allocating the users to servers. At best, the hash function, for instance, operates in a random-like manner when assigning users to servers. This can result in an excessive amount of network traffic between servers in order to pass data between “related” users. For example, in the case of the instant messaging, the types of data can include communications of alerts, messages, data sharing, etc. As the number of servers to accommodate the masses of users increases, the network traffic can be undesirably high, resulting in slower data transfers between servers and between users.